container_aria

my file learn about tech container (docker, podman, kubernetes)


Project maintained by ariafatah0711 Hosted on GitHub Pages — Theme by mattgraham

statefulset

stateless dengan persistent volume

alt text alt text

stateless vs stateful

statefulset

create statefulset

command

kubectl create -f statefulset.yaml
kubectl apply -f statefulset.yamll

kubectl get statefulset
kubectl describe statefulset <name_statefulset>
kubectl delete statefulset <name_statefulset>

template

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: name-stateful
  labels:
    name: name-stateful
spec:
  # https://github.com/kubernetes/kubernetes/issues/69608
  serviceName: name-stateful-service
  replicas: 3
  selector:
    matchLabels:
      name: name-stateful
  volumeClaimTemplates:
    - metadata:
        name: name-stateful-volume-claim
      spec:
        accessModes:
          - ReadWriteOnce
        volumeMode: Filesystem
        resources:
          requests:
            storage: 1Gi
  template:
    metadata:
      name: name-stateful
      labels:
        name: name-stateful
    spec:
      containers:
        - name: name-stateful
          image: image/name-stateful
          volumeMounts:
            - mountPath: /app/data
              name: name-stateful-volume-claim

example

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nodejs-stateful-volume
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 5Gi
  hostPath:
    path: /data/location

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nodejs-stateful
  labels:
    name: nodejs-stateful
spec:
  # https://github.com/kubernetes/kubernetes/issues/69608
  serviceName: nodejs-stateful-service
  replicas: 3
  selector:
    matchLabels:
      name: nodejs-stateful
  volumeClaimTemplates:
    - metadata:
        name: nodejs-stateful-volume-claim
      spec:
        accessModes:
          - ReadWriteOnce
        volumeMode: Filesystem
        resources:
          requests:
            storage: 1Gi
  template:
    metadata:
      name: nodejs-stateful
      labels:
        name: nodejs-stateful
    spec:
      containers:
        - name: nodejs-stateful
          image: khannedy/nodejs-stateful
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          volumeMounts:
            - mountPath: /app/data
              name: nodejs-stateful-volume-claim

run

kubectl create -f statefulset.yaml

kubectl get pod
# NAME                READY   STATUS    RESTARTS     AGE
# nodejs-stateful-0   1/1     Running   0            116s
# nodejs-stateful-1   1/1     Running   0            109s
# nodejs-stateful-2   1/1     Running   0            103s

kubectl delete pod nodejs-stateful-1

kubectl get pod
# NAME                READY   STATUS              RESTARTS     AGE
# nodejs-stateful-0   1/1     Running             0            3m35s
# nodejs-stateful-1   0/1     ContainerCreating   0            3s
# nodejs-stateful-2   1/1     Running             0            3m22s